package com.provafinal.bean;

import com.provafinal.dao.AgendaDAO;
import com.provafinal.entity.Agenda;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

@ManagedBean(name = "bAgenda")
@RequestScoped
public class AgendaBean extends AbstractBean {

    private final AgendaDAO agendaDAO = new AgendaDAO();
    private Agenda agenda;
    private List<Agenda> agendas;
    private String nome;

    public String gravar() throws Exception {
        try {
            if (agenda.getId() == null) {
                agendaDAO.salvar(agenda);
            } else {
                agendaDAO.alterar(agenda);
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Gravado com sucesso!"));
            agenda = null;
            return null;
        } catch (Exception e) {
            addMessageToRequest(e.getMessage());
            return null;
        }

    }

    public String alterar(Integer agendaId) throws Exception {
        agenda = agendaDAO.carregar(agendaId, Agenda.class);
        return null;
    }

    public String limpar() throws Exception {
        agenda = null;
        return null;
    }

    public String excluir(Integer agendaId) throws Exception {
        agenda = agendaDAO.carregar(agendaId, Agenda.class);
        agendaDAO.excluir(agenda);
        return redirect("cadastro_agenda");
    }

    public void pesquisar() {
        if (nome.length() > 1) {
            agendas = agendaDAO.pisquisarContato(nome);
        }
    }

    public Agenda getAgenda() {
        if (agenda == null) {
            agenda = new Agenda();
        }
        return agenda;
    }

    public void setAgenda(Agenda agenda) {
        this.agenda = agenda;
    }

    public List<Agenda> getAgendas() {
        if (agendas == null) {
            agendas = agendaDAO.listasAgenda();
        }
        return agendas;
    }

    public void setAgendas(List<Agenda> agendas) {
        this.agendas = agendas;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
